﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Core.DataAccess.IRepositories
{
    public interface IAccountRepository
    {
        Account GetAccountByID(int AccountID);
        void SaveAccount(Account account);
        Account GetAccountByEmail(string Email);
        Account GetAccountByUsername(string Username);
        void AddPermission(Account account, Permission permission);
        List<Account> GetAllAccounts(Int32 PageNumber, Int32 pageSize);
        void CreateProfileForAccount(Account account);
        List<Account> GetAccountsByAccountIDList(List<Int32> accountIDs);
        bool UpdatePassword(int accountID,string password);
        bool CheckPassword(string accountID, string password);
        List<Account> GetRandomListAccount();
        List<Account> GetListAccountsByTextSearch(string text);
        int CheckAccountByAccountID(int accountID, int friendAccountID);
        int GetCountLoginByUsername(string username);
        void UpdateCountLoginByUsername(string username);
        void ResetCountLoginByUsername(string username);
        void IsLockAccount(string username,bool isLock);
        void UpdateLevelAccountByAccountID(int accountID, int levelID);
        void UpdateScoreAccountByAccountID(int accountID, int score);
        List<Account> GetAllAccounts();
        void UpdateMember_AdminPage(int accountID,int levelID,bool isLock);
        void DeleteAccountByAccountID(int accountID);
        void DeleteAccount(Account account);
        string GetPlainTextByAccountID(int accountID);
        int GetLevelIDByAccountID(int accountID);
        int GetScoreByAccountID(int accountID);
    }
}
